﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Collections;
using DTO;
namespace DAO
{
    public class CLOAIKHACHTHUEDAO:AbstractDao
    {
        // Hàm lấy thông tin 1 loại khách thuê bất kỳ để xử lý
        public static CLOAIKHACHTHUEDTO LayThongTinLoaiKhachThue(int MaLoaiKhachThue)
        {
            CLOAIKHACHTHUEDTO loaikhachthueDto = new CLOAIKHACHTHUEDTO();
            OleDbConnection cn = new OleDbConnection();
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "Select * From LOAIKHACHTHUE where MaLoaiKhachThue=" + MaLoaiKhachThue.ToString();
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            OleDbDataReader myReader = cmd.ExecuteReader();
            while (myReader.Read())
            {
                loaikhachthueDto.MaLoaiKhachThue = int.Parse(myReader[0].ToString());
                loaikhachthueDto.TenLoaiKhachThue = myReader[1].ToString();
                loaikhachthueDto.HeSoLoaiKhach = double.Parse(myReader[2].ToString());
                loaikhachthueDto.Duyet = bool.Parse(myReader[3].ToString());
                loaikhachthueDto.TinhTrang = bool.Parse(myReader[4].ToString());
                loaikhachthueDto.HeSoMoi = double.Parse(myReader[5].ToString());
            }
            myReader.Close();
            cn.Close();
            return loaikhachthueDto;
        }
        // Hàm lấy danh sách tất cả các loại khách thuê để xử lý
        public static List<CLOAIKHACHTHUEDTO> LayDanhSachLoaiKhachThue()
        {
            List<CLOAIKHACHTHUEDTO> ds = new List<CLOAIKHACHTHUEDTO>();
            OleDbConnection cn = new OleDbConnection();
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "Select * From LOAIKHACHTHUE";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            OleDbDataReader myReader = cmd.ExecuteReader();
            while (myReader.Read())
            {
                CLOAIKHACHTHUEDTO loaikhachthueDto = new CLOAIKHACHTHUEDTO();
                loaikhachthueDto.MaLoaiKhachThue = int.Parse(myReader[0].ToString());
                loaikhachthueDto.TenLoaiKhachThue = myReader[1].ToString();
                loaikhachthueDto.HeSoLoaiKhach = double.Parse(myReader[2].ToString());
                loaikhachthueDto.Duyet = bool.Parse(myReader[3].ToString());
                loaikhachthueDto.TinhTrang = bool.Parse(myReader[4].ToString());
                loaikhachthueDto.HeSoMoi = double.Parse(myReader[5].ToString());
                ds.Add(loaikhachthueDto);
            }
            myReader.Close();
            cn.Close();
            return ds;
        }
        // Hàm lấy danh sách tất cả các loại khách thuê đã đánh dấu xóa dùng để xử lý
        public static List<CLOAIKHACHTHUEDTO> LayDanhSachLoaiKhachThueDaDanhDauXoa()
        {
            List<CLOAIKHACHTHUEDTO> ds = new List<CLOAIKHACHTHUEDTO>();
            OleDbConnection cn = new OleDbConnection();
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "Select * From LOAIKHACHTHUE where TinhTrang=true";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            OleDbDataReader myReader = cmd.ExecuteReader();
            while (myReader.Read())
            {
                CLOAIKHACHTHUEDTO loaikhachthueDto = new CLOAIKHACHTHUEDTO();
                loaikhachthueDto.MaLoaiKhachThue = int.Parse(myReader[0].ToString());
                loaikhachthueDto.TenLoaiKhachThue = myReader[1].ToString();
                loaikhachthueDto.HeSoLoaiKhach = double.Parse(myReader[2].ToString());
                loaikhachthueDto.Duyet = bool.Parse(myReader[3].ToString());
                loaikhachthueDto.TinhTrang = bool.Parse(myReader[4].ToString());
                loaikhachthueDto.HeSoMoi = double.Parse(myReader[5].ToString());
                ds.Add(loaikhachthueDto);
            }
            myReader.Close();
            cn.Close();
            return ds;
        }
        // Hàm lấy danh sách tất cả các loại khách thuê chưa đánh dấu xóa dùng để xử lý
        public static List<CLOAIKHACHTHUEDTO> LayDanhSachLoaiKhachThueChuaDanhDauXoa()
        {
            List<CLOAIKHACHTHUEDTO> ds = new List<CLOAIKHACHTHUEDTO>();
            OleDbConnection cn = new OleDbConnection();
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "Select * From LOAIKHACHTHUE where TinhTrang=false";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            OleDbDataReader myReader = cmd.ExecuteReader();
            while (myReader.Read())
            { 
                CLOAIKHACHTHUEDTO loaikhachthueDto = new CLOAIKHACHTHUEDTO();



                loaikhachthueDto.MaLoaiKhachThue = int.Parse(myReader[0].ToString());
                loaikhachthueDto.TenLoaiKhachThue = myReader[1].ToString();
                loaikhachthueDto.HeSoLoaiKhach = double.Parse(myReader[2].ToString());
                loaikhachthueDto.Duyet = bool.Parse(myReader[3].ToString());
                loaikhachthueDto.TinhTrang = bool.Parse(myReader[4].ToString());
                loaikhachthueDto.HeSoMoi = double.Parse(myReader[5].ToString());




                ds.Add(loaikhachthueDto);
            }
            myReader.Close();
            cn.Close();
            return ds;
        }
        //Thông
        public static List<CLOAIKHACHTHUEDTO> LayDanhSachLoaiKhachThueDaDuyet()
        {
            List<CLOAIKHACHTHUEDTO> ds = new List<CLOAIKHACHTHUEDTO>();
            OleDbConnection cn = new OleDbConnection();
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "Select * From LOAIKHACHTHUE where TinhTrang=false and Duyet=true";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            OleDbDataReader myReader = cmd.ExecuteReader();
            while (myReader.Read())
            {
                CLOAIKHACHTHUEDTO loaikhachthueDto = new CLOAIKHACHTHUEDTO();
                loaikhachthueDto.MaLoaiKhachThue = int.Parse(myReader[0].ToString());
                loaikhachthueDto.TenLoaiKhachThue = myReader[1].ToString();
                loaikhachthueDto.HeSoLoaiKhach = double.Parse(myReader[2].ToString());
                loaikhachthueDto.Duyet= bool.Parse(myReader[3].ToString());
                loaikhachthueDto.TinhTrang = bool.Parse(myReader[4].ToString());
                loaikhachthueDto.HeSoMoi = double.Parse(myReader[5].ToString());
                ds.Add(loaikhachthueDto);
            }
            myReader.Close();
            cn.Close();
            return ds;
        }
        //Hàm lấy toàn bộ thông tin của tất cả loại khách thuê lưu trong csdl đổ vào 1 bảng chỉ hiện ra trên giao diện nhưng không dùg xử lý được
        public static DataTable LayBang()
        {
            DataTable dt = new DataTable();
            OleDbConnection cn;
            //B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            //B3: Tao chuoi strSQL thao tac CSDL
            String strSQL;
            strSQL = "Select * From LOAIKHACHTHUE";
            //B4: Thuc thi chuoi strSQL
            OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
            da.Fill(dt);
            //B5: Dong ket noi CSDL
            cn.Close();
            return dt;
        }
        ////Hàm lấy 1 số thông tin của tất cả loại khách thuê lưu trong csdl đổ vào 1 bảng chỉ hiện ra trên giao diện nhưng không dùg xử lý được
        public static DataTable LayBangLoaiKhachThue()
        {
            DataTable dt = new DataTable();
            OleDbConnection cn;
            //B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            //B3: Tao chuoi strSQL thao tac CSDL
            String strSQL;
            strSQL = "Select TenLoaiKhachThue,HeSoLoaiKhach From LOAIKHACHTHUE";
            //B4: Thuc thi chuoi strSQL
            OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
            da.Fill(dt);
            //B5: Dong ket noi CSDL
            cn.Close();
            return dt;
        }
        ////Lấy ra các loại khách thuê đã đánh dấu xóa 
        public static DataTable LayBangLoaiKhachThueDaDanhDauXoa()
        {
            DataTable dt = new DataTable();
            OleDbConnection cn;
            //B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            //B3: Tao chuoi strSQL thao tac CSDL
            String strSQL;
            strSQL = "Select * From LOAIKHACHTHUE where TinhTrang=true";
            //B4: Thuc thi chuoi strSQL
            OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
            da.Fill(dt);
            //B5: Dong ket noi CSDL
            cn.Close();
            return dt;
        }    
        ////Lấy ra các loại khách thuê đã đánh dấu xóa 
        public static DataTable LayBangLoaiKhachThueDaDuyet()
        {
            DataTable dt = new DataTable();
            OleDbConnection cn;
            //B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            //B3: Tao chuoi strSQL thao tac CSDL
            String strSQL;
            strSQL = "Select * From LOAIKHACHTHUE where TinhTrang=false and Duyet=true";
            //B4: Thuc thi chuoi strSQL
            OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
            da.Fill(dt);
            //B5: Dong ket noi CSDL
            cn.Close();
            return dt;
        }
        ////Lấy ra các loại khách thuê chưa đánh dấu xóa 
        public static DataTable LayBangLoaiKhachThueChuaDanhDauXoa()
        {
            DataTable dt = new DataTable();
            OleDbConnection cn;
            //B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            //B3: Tao chuoi strSQL thao tac CSDL
            String strSQL;
            strSQL = "Select * From LOAIKHACHTHUE where TinhTrang=false";
            //B4: Thuc thi chuoi strSQL
            OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
            da.Fill(dt);
            //B5: Dong ket noi CSDL
            cn.Close();
            return dt;
        }
        ////Thêm 1 loại khách thuê
        public void ThemLoaiKhachThue(CLOAIKHACHTHUEDTO loaikhachthueDto)
        {
            OleDbConnection cn;
            //B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "Insert into LOAIKHACHTHUE(TenLoaiKhachThue,HeSoLoaiKhach,Duyet,TinhTrang,HeSoMoi) values (?,?,?,?,?)";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            cmd.Parameters.Add("@TenLoaiKhachThue", OleDbType.WChar);
            cmd.Parameters.Add("@HeSoLoaiKhach", OleDbType.Double);
            cmd.Parameters.Add("@Duyet", OleDbType.Boolean);
            cmd.Parameters.Add("@TinhTrang", OleDbType.Boolean);
            cmd.Parameters.Add("@HeSoMoi", OleDbType.Double);
            cmd.Parameters[0].Value = loaikhachthueDto.TenLoaiKhachThue;
            cmd.Parameters[1].Value = loaikhachthueDto.HeSoLoaiKhach;
            cmd.Parameters[2].Value = loaikhachthueDto.Duyet;
            cmd.Parameters[3].Value = loaikhachthueDto.TinhTrang;
            cmd.Parameters[4].Value = loaikhachthueDto.HeSoMoi;
            cmd.ExecuteNonQuery();
            //strSQL = "Select @@IDENTITY";
            //cmd = new OleDbCommand(strSQL, cn);
            //lndDto.MaLoaiNguoiDung = (int)cmd.ExecuteScalar();
            cn.Close();
        }
        //Hàm đánh dấu xóa thông tin một loại khách thuê hoặc phục hồi lại
        public static void CapNhatTinhTrangLoaiKhachThue(int MaLoaiKhachThue, bool TinhTrang)
        {
            OleDbConnection cn;
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            string strSQL = "UPDATE LOAIKHACHTHUE SET TinhTrang=? WHERE (MaLoaiKhachThue=?)";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            cmd.Parameters.Add("@TinhTrang", OleDbType.Boolean);
            cmd.Parameters.Add("@MaLoaiKhachThue", OleDbType.Integer);
            cmd.Parameters[0].Value = TinhTrang;
            cmd.Parameters[1].Value = MaLoaiKhachThue;
            cmd.ExecuteNonQuery();
            cn.Close();
        }
        ////Hàm xóa vĩnh viễn thông tin 1 loại khách thuê
        public static void XoaLoaiKhachThue(int MaLoaiKhachThue)
        {
            //Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            OleDbConnection cn;
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            // chuoi strSQL thao tac CSDL
            String strSQL = "DELETE FROM LOAIKHACHTHUE WHERE MaLoaiKhachThue=?";
            //B4: Thuc thi chuoi strSQL
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            //add vao cmd để tránh bị sai sót khi gán thuộc tính bằng 1 giá trị cụ thể
            cmd.Parameters.Add("@MaLoaiKhachThue", OleDbType.Integer);
            cmd.Parameters[0].Value = MaLoaiKhachThue;
            cmd.ExecuteNonQuery();
            //đóng kết nối
            cn.Close();
        }
        ////Hàm cập nhật 1 số thông tin 1 loại khách thuê
        public void CapNhatThongTinLoaiKhachThue(CLOAIKHACHTHUEDTO loaikhachthueDto)
        {
            OleDbConnection cn;
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "UPDATE LOAIKHACHTHUE SET TenLoaiKhachThue=? WHERE  (MaLoaiKhachThue = ?)";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            cmd.Parameters.Add("@TenLoaiKhachThue", OleDbType.WChar);
            cmd.Parameters.Add("@MaLoaiKhachThue", OleDbType.Integer);
            cmd.Parameters[0].Value = loaikhachthueDto.TenLoaiKhachThue;
            cmd.Parameters[1].Value = loaikhachthueDto.MaLoaiKhachThue;
            cmd.ExecuteNonQuery();
            cn.Close();
        }
        //Hàm thay đổi hệ số loại khách 1 loại khách thuê
        public static void ThayDoiHeSoLoaiKhachThue(int MaLoaiKhachThue, double HeSoLoaiKhach)
        {
            OleDbConnection cn;
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "UPDATE LOAIKHACHTHUE SET HeSoLoaiKhach=? WHERE  (MaLoaiKhachThue = ?)";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            cmd.Parameters.Add("@HeSoLoaiKhach", OleDbType.Double);
            cmd.Parameters.Add("@MaLoaiKhachThue", OleDbType.Integer);
            cmd.Parameters[0].Value = HeSoLoaiKhach;
            cmd.Parameters[1].Value = MaLoaiKhachThue;
            cmd.ExecuteNonQuery();
            cn.Close();
        }
        ////Hàm cập nhật thong tin đầy đủ của 1 loại khách thuê 
        ////public void CapNhatThongTinLoaiKhachThue(CLOAIKHACHTHUEDTO loaikhachthueDto)
        ////{
        ////    OleDbConnection cn;
        ////    cn = CLOAIKHACHTHUEDAO.ConnectionData();
        ////    String strSQL = "UPDATE LOAIKHACHTHUE SET TenLoaiKhachThue=?,HeSoLoaiKhach=?,TinhTrang=? WHERE  (MaLoaiKhachThue = ?)";
        ////    OleDbCommand cmd = new OleDbCommand(strSQL, cn);
        ////    cmd.Parameters.Add("@TenLoaiKhachThue", OleDbType.WChar);
        ////    cmd.Parameters.Add("@HeSoLoaiKhach", OleDbType.Double);
        ////    cmd.Parameters.Add("@TinhTrang", OleDbType.Boolean);
        ////    cmd.Parameters.Add("@MaLoaiKhachThue", OleDbType.Integer);
        ////    cmd.Parameters[0].Value = loaikhachthueDto.TenLoaiKhachThue;
        ////    cmd.Parameters[1].Value = loaikhachthueDto.HeSoLoaiKhach;
        ////    cmd.Parameters[2].Value = loaikhachthueDto.TinhTrang;
        ////    cmd.Parameters[3].Value = loaikhachthueDto.MaLoaiKhachThue;
        ////    cmd.ExecuteNonQuery();
        ////    cn.Close();
        ////}       
        //Nguyên
        //thêm loại khách thuê 1
        public void ThemLoaiKhachThue1(CLOAIKHACHTHUEDTO loaikhachthueDto)
        {
            OleDbConnection cn;
            //B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "Insert into LOAIKHACHTHUE(TenLoaiKhachThue,HeSoLoaiKhach,TinhTrang,Duyet,HeSoMoi) values (?,?,?,?,?)";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            cmd.Parameters.Add("@TenLoaiKhachThue", OleDbType.WChar);
            cmd.Parameters.Add("@HeSoLoaiKhach", OleDbType.Double);
            cmd.Parameters.Add("@TinhTrang", OleDbType.Boolean);
            cmd.Parameters.Add("@Duyet", OleDbType.Boolean);
            cmd.Parameters.Add("@HeSoMoi", OleDbType.Double);
            cmd.Parameters[0].Value = loaikhachthueDto.TenLoaiKhachThue;
            cmd.Parameters[1].Value = loaikhachthueDto.HeSoLoaiKhach;
            cmd.Parameters[2].Value = loaikhachthueDto.TinhTrang;
            cmd.Parameters[3].Value = loaikhachthueDto.Duyet;
            cmd.Parameters[4].Value = loaikhachthueDto.HeSoMoi;
            cmd.ExecuteNonQuery();
            //strSQL = "Select @@IDENTITY";
            //cmd = new OleDbCommand(strSQL, cn);
            //lndDto.MaLoaiNguoiDung = (int)cmd.ExecuteScalar();
            cn.Close();
        }

        //hàm cập nhật loại khách thuê
        public static void ThayDoiHeSoMoiLoaiKhachThue(CLOAIKHACHTHUEDTO loaiKhachThue)
        {
            OleDbConnection cn;
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "UPDATE LOAIKHACHTHUE SET HeSoMoi=?,Duyet=false WHERE  (MaLoaiKhachThue = ?)";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            cmd.Parameters.Add("@HeSoMoi", OleDbType.Double);
            cmd.Parameters.Add("@MaLoaiKhachThue", OleDbType.Integer);
            cmd.Parameters[0].Value = loaiKhachThue.HeSoMoi;
            cmd.Parameters[1].Value = loaiKhachThue.MaLoaiKhachThue;
            cmd.ExecuteNonQuery();
            cn.Close();
        }

        //Ấn

        public static DataTable LayBangLoaiKhachThueChuaDuyet()
        {
            DataTable dt = new DataTable();
            OleDbConnection cn;
            //B1 & B2: Tao chuoi ket noi, mo ket noi bang doi tuong ket noi
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            //B3: Tao chuoi strSQL thao tac CSDL
            String strSQL;
            strSQL = "Select * From LOAIKHACHTHUE where TinhTrang=false and Duyet=false";
            //B4: Thuc thi chuoi strSQL
            OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
            da.Fill(dt);
            //B5: Dong ket noi CSDL
            cn.Close();
            return dt;
        }



        //Hàm duyệt hệ số loại khách
        public static void DuyetHeSoLoaiKhach(int maLoaiKhach)
        {
            OleDbConnection cn;
            cn = CLOAIKHACHTHUEDAO.ConnectionData();
            String strSQL = "UPDATE LOAIKHACHTHUE SET Duyet=True WHERE  (MaLoaiKhachThue = ?)";
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            cmd.Parameters.Add("@MaLoaiKhachThue", OleDbType.Integer);
            cmd.Parameters[0].Value = maLoaiKhach;
            cmd.ExecuteNonQuery();
            cn.Close();
        }
    }
}
